using System.Collections.Generic;

namespace LDNS.SDK.Commands.Models
{
    /// <summary>
    /// 命令的非泛型接口
    /// 用于在不需要知道具体结果类型时引用命令对象
    /// 作者：huobing
    /// </summary>
    public interface IBaseCommand
    {
        /// <summary>命令名称</summary>
        string Name { get; }
        
        /// <summary>命令格式</summary>
        string Format { get; }
        
        /// <summary>命令描述</summary>
        string Description { get; }
        
        /// <summary>命令权限</summary>
        CommandPermission Permission { get; }
        
        /// <summary>命令别名</summary>
        IEnumerable<string> Aliases { get; }
        
        /// <summary>
        /// 参数验证方法
        /// </summary>
        /// <param name="args">命令参数</param>
        /// <param name="error">错误信息</param>
        /// <returns>是否验证通过</returns>
        bool Validate(string[] args, out string error);
        
        /// <summary>
        /// 获取命令帮助信息
        /// </summary>
        /// <returns>帮助文本</returns>
        string GetHelp();
    }
}